CrewAI propone una metáfora organizativa que resulta extrañamente cómoda: los agentes son empleados con un rol (analista, investigadora, redactor), trabajan sobre tareas concretas y se agrupan en una tripulación o crew. El vocabulario ya lo usamos en cualquier oficina, así que el salto mental desde “reunión de equipo” a “orquestación de LLMs” es corto. Esa es, en buena medida, la razón por la que el framework ha ganado tracción tan rápido a lo largo de 2024: permite que personas sin formación en grafos de estados o en teoría de sistemas distribuidos describan flujos multi-agente sin sentirse impostoras.
Frente a CrewAI conviven dos alternativas maduras. LangGraph, dentro del ecosistema LangChain, modela todo como una máquina de estados explícita: nodos, aristas, transiciones y un estado compartido que fluye por el grafo. AutoGen, de Microsoft, apuesta por la conversación: los agentes hablan entre ellos en diálogos libres y emergen los resultados. CrewAI se queda en medio, con una estructura de tareas secuenciales o jerárquicas que recuerda a un diagrama de Gantt habitado por modelos de lenguaje.
El modelo mental
Los primitivos de CrewAI son cuatro. Un Agent es una instancia de LLM con un rol (la etiqueta que lo identifica), una meta (qué intenta conseguir), un backstory (contexto narrativo que condiciona el estilo) y una lista de herramientas. Una Task es una unidad de trabajo con descripción en lenguaje natural, output esperado y un agente asignado. La Crew agrupa agentes y tareas, y declara un proceso de ejecución. El proceso puede ser secuencial (cadena directa), jerárquico (un manager delega) o custom si se define una lógica propia.
La gracia está en que todo el flujo se lee como una descripción de puestos de trabajo. Un product manager puede revisar un crew y entender qué hace sin pedir traducción. Ese es el diferencial frente a LangGraph, donde el mismo flujo requiere pensar en términos de estado, transiciones y condiciones.
from crewai import Agent, Task, Crew, Process
researcher = Agent(
role="Senior Researcher",
goal="Find cutting-edge information on the given topic",
backstory="Expert researcher with years of analysis experience",
tools=[search_tool],
)
writer = Agent(
role="Tech Writer",
goal="Write clear articles for a technical audience",
backstory="Experienced writer who turns research into readable prose",
)
research_task = Task(
description="Research latest advances in LLM reasoning",
expected_output="Detailed report with key findings and citations",
agent=researcher,
)
writing_task = Task(
description="Write an article based on the research",
expected_output="1500-word polished article",
agent=writer,
context=[research_task],
)
crew = Crew(
agents=[researcher, writer],
tasks=[research_task, writing_task],
process=Process.sequential,
)
result = crew.kickoff()
Procesos, herramientas y memoria
El proceso secuencial es el pan de cada día: la salida de una tarea alimenta el contexto de la siguiente. El jerárquico introduce un manager automático que decide qué tarea asignar a qué agente, útil cuando el flujo no es lineal pero añade una capa de no-determinismo que conviene tener en cuenta antes de llevarla a producción. Para lógica más fina, el modo Flows (añadido en 2024) permite combinar crews con control explícito, routing condicional y listeners reactivos, cerrando parte del hueco respecto a LangGraph.
Las herramientas son funciones invocables que los agentes deciden cuándo usar. CrewAI trae integraciones listas para búsqueda web (Serper, Tavily), ejecución de código, lectura de ficheros o scraping, y mantiene una capa de compatibilidad con herramientas de LangChain para aprovechar ese ecosistema. Una función Python decorada es suficiente para exponer cualquier acción del dominio propio, desde consultar una base de datos interna hasta abrir un ticket en Jira.
La memoria es opcional pero relevante cuando el crew opera sobre varias sesiones. Short-term memory cubre el estado dentro de una ejecución; long-term memory persiste resúmenes entre runs apoyándose en una base vectorial; entity memory va siguiendo nombres propios y referencias para evitar que la tripulación olvide a quién está hablando. Activar memoria tiene coste: más tokens, más latencia y más superficie donde algo puede desviarse, así que se introduce cuando hace falta.
CrewAI frente a LangGraph y AutoGen
La comparación más útil no es “cuál es mejor”, sino “qué dolor resuelve cada uno”.
LangGraph obliga a pensar el flujo como un grafo de estados. Esto es tedioso al principio y salva la vida en producción: cada transición es explícita, el estado compartido se serializa, se puede inspeccionar, retomar desde un checkpoint y los errores son localizables. Si el sistema va a correr miles de veces al día y fallar en cualquier nodo tiene coste, LangGraph gana casi siempre.
AutoGen renuncia a la estructura rígida y deja que los agentes conversen. Funciona sorprendentemente bien en exploración, brainstorming y tareas abiertas donde no sabes aún la forma de la solución. El precio es que los diálogos pueden alargarse, repetirse o derivar, y depurar un chat de seis agentes es una experiencia humilde.
CrewAI ocupa el punto dulce para PoCs, workflows de negocio bien delimitados y equipos mixtos donde no todo el mundo es ingeniero. Es más estructurado que AutoGen y más legible que LangGraph, a cambio de menos flexibilidad y menos tooling de depuración. El añadido de Flows lo acerca a LangGraph en capacidades, pero el sabor del framework sigue siendo el de describir roles y tareas, no el de diseñar máquinas de estados.
Cuándo paga el patrón multi-agente
Conviene un poco de escepticismo. Muchos problemas etiquetados como “multi-agente” se resuelven igual o mejor con una sola llamada a un modelo capaz, una buena plantilla de prompt y una función que orquesta un par de pasos. Pasar a multi-agente tiene sentido cuando hay separación genuina de responsabilidades (un agente que busca, otro que critica, otro que sintetiza), cuando las herramientas requeridas no caben cómodamente en un solo system prompt, o cuando la trazabilidad por rol es un requisito de negocio. Los casos donde CrewAI brilla de verdad son pipelines de contenido (research, draft, edit), triage de soporte, análisis de datos con generación de informe, due diligence básica o revisiones legales de primer pase.
Lo que no resuelve es la inconsistencia inherente de los LLMs. Si el modelo base se desvía, tres agentes se desvían juntos. Es fácil que los roles “se fundan” durante la ejecución (el writer empieza a investigar, el researcher edita estilo) a menos que los backstories y las expected outputs sean quirúrgicamente claros. La observabilidad sigue siendo un punto débil: ver exactamente qué prompt recibió cada agente, con qué herramientas y qué devolvió, requiere enganchar callbacks o integraciones externas como Langfuse.
Realismo sobre coste y límites
El coste se modela como tokens por agente, por tarea, por iteración. Un crew sencillo de dos agentes y tres tareas con GPT-4o ronda el medio dólar a dos dólares por ejecución; uno complejo con cinco agentes y diez tareas puede irse a quince o veinte. Mezclar modelos (GPT-4o para razonamiento crítico y uno más barato para pasos rutinarios) es la optimización más eficaz, y CrewAI lo permite porque cada agente acepta su propio LLM, sea OpenAI, Anthropic, Groq u Ollama local.
El framework sigue siendo joven. La documentación mejora cada mes pero hay esquinas sin pulir, sobre todo en el modo jerárquico y en la integración con herramientas custom complejas. Para producción seria, el consejo razonable de septiembre de 2024 es: prototipar en CrewAI, trasladar a LangGraph cuando el sistema se vuelve crítico, y dejar AutoGen para exploración. Usarlos como fases de un mismo proyecto, no como religiones enfrentadas.
La lectura larga es que los frameworks multi-agente están en plena adolescencia: el vocabulario se asienta, los patrones que funcionan empiezan a destilarse y el coste en tokens aún duele. CrewAI acertó al escoger la metáfora más humana, y eso le ha dado adopción rápida. Si el próximo año trae mejores herramientas de depuración y un runtime más determinista, el patrón se queda. Si no, se absorberá dentro de frameworks más generalistas como episodio útil de una historia más larga.